﻿namespace IcicleFramework.Components.Actions
{
    public interface ITimedAction : IAction
    {
        /// <summary>
        /// Gets or sets the amount of time required between executions of this <see cref="IAction"/>.
        /// </summary>
        float IdleTime { get; set; }

        /// <summary>
        /// Gets or sets the amount of time required to charge this <see cref="IAction"/> before it is actually executed after idling.
        /// </summary>
        float ChargeTime { get; set; }

        /// <summary>
        /// Gets the amount of idle time remaining before this <see cref="IAction"/> can be executed.
        /// </summary>
        float IdleTimeRemaining { get; }

        /// <summary>
        /// Gets the amount of charge time remaining before this <see cref="IAction"/> is actually executed after idling
        /// </summary>
        float ChargeTimeRemaining { get; }
    }
}
